#!/usr/bin/env bash

if tput setaf 1 &> /dev/null; then
	tput sgr0; # reset colors
	bold=$(tput bold);
	reset=$(tput sgr0);
	# Solarized colors, taken from http://git.io/solarized-colors.
	black=$(tput setaf 0);
	blue=$(tput setaf 39);
	cyan=$(tput setaf 45);
	green=$(tput setaf 34);
	orange=$(tput setaf 142);
	purple=$(tput setaf 206);
	red=$(tput setaf 161);
	white=$(tput setaf 15);
	yellow=$(tput setaf 202);
else
	bold='';
	reset="\e[0m";
	black="\e[1;30m";
	blue="\e[1;34m";
	cyan="\e[1;36m";
	green="\e[1;32m";
	orange="\e[1;33m";
	purple="\e[1;35m";
	red="\e[1;31m";
	white="\e[1;37m";
	yellow="\e[1;33m";
fi;

prompt_git() {
	local branchName='';

	# Check if the current directory is in a Git repository.
	git rev-parse --is-inside-work-tree &>/dev/null || return;

	# Check for what branch we’re on.
	# Get the short symbolic ref. If HEAD isn’t a symbolic ref, get a
	# tracking remote branch or tag. Otherwise, get the
	# short SHA for the latest commit, or give up.
	branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \
		git describe --all --exact-match HEAD 2> /dev/null || \
		git rev-parse --short HEAD 2> /dev/null || \
		echo 'unknown')";
	echo -e "${purple}(${branchName})";
}

# Highlight the user name when logged in as root.
if [[ "${USER}" == "root" ]]; then
    userStyle="${red}";
else
	userStyle="${green}";
fi;
hostStyle="${bold}${green}";

# Set the terminal title and prompt.
PS1="\[\033]0;\W\007\]"; # working directory base name
PS1+="\[${bold}\]\n"; # newline
PS1+="\[${userStyle}\]\u"; # username
PS1+="\[${green}\]@";
PS1+="\[${hostStyle}\]\h"; # host
PS1+="\[${green}\]:";
PS1+="\[${yellow}\]\w "; # working directory full path
PS1+="\`prompt_git\`"; # Git repository details
PS1+="\n";
PS1+="\[${yellow}\]\$ \[${reset}\]"; # `$` (and reset color)
export PS1;

PS2="\[${orange}\]→ \[${reset}\]";
export PS2;
